#include<iostream>
#include<string>

// int sum_array(int arr[],int len){
// 	return (len<2&&arr) ? (arr[0]) 
//         : (arr[0] + sum_array(arr+1,len-1));
// }

// void ArrAndPtr(){
//     int arr[5];
//     for(int i=0;i<5;++i)
//         arr[i]=0;
//     int* pa=arr+2;
//     pa[1]=11;
//     std::cout<<arr[3]<<std::endl;
// }



// void ptrShow(){
//     char ch='Y';
//     char *pc=&ch;
//     //Is it true?
//     std::cout<<pc<<std::endl;
//     //std::cout<<(int*)pc<<std::endl;
// }

void Hello(){
    std::cout<<"HelloWorld"<<std::endl;
}
void Hello(int i){
    std::cout<<i<<std::endl;
}

// void Hello(std::string const& s="World"){
//     std::cout<<"Hello"+s<<std::endl;
// }

// int add(int a,int b){return a+b;}
// int sub(int a,int b){return a-b;}
// int mul(int a,int b){return a*b;}
// int Div(int a,int b){return a/b;}

// auto op (char oper)->int(*)(int,int){
//     switch(oper){
//         case '+':
//             return add;
//         case '-':
//             return sub;
//         case '*':
//             return mul;
//     int temp=lh;
//     lh=rh;
//     rh=temp;
// }
//         case '/':
//             return Div;
//         default:
//             return nullptr;
//     }
// }


void ref(){
    int i=42;
    int& ir=i;
    std::cout<<"address of i : "<<&i
            <<"\naddress of ir : "<<&ir<<std::endl;
    ir+=3;
    std::cout<<i<<std::endl;
}

double Power(double d,int times){
    double number=d;
    while(times--){
        d*=number;
    }
    return d;
}

void swap(int lh,int rh){//pass by value
    int temp;
    temp=lh;
    lh=rh;
    rh=temp;
}

void swap(int* lh,int* rh){
    int temp=*lh;
    *lh=*rh;
    *rh=temp;
}
// int i=42,j=0;
// swap(i,j);
void swap(int& lh,int& rh){//pass by reference
    int temp=lh;
    lh=rh;
    rh=temp;
}

void Hello(int i,int j){
    i+=j;
    std::cout<<i;
}

void print(const int[]);

class Str{//this is a class

};
struct snippet//this is a struct
{
    /* data */
};


using std::string;
void str(){
    string Hello="HelloWorld";
    Hello+="123";
    Hello=Hello.substr(1,2);
    std::cout<<Hello[1];//el
}
int main(int argc,char*argv[]){
    // char**argv;
    // int i=42,j=0;
    // swap(i,j);
    // std::cout<<i<<' '<<j<<std::endl;
    // std::cout<<"\n"<<i<<std::endl;
    // ref();
    str();
    return 0;
}
    // ref();
    // std::cout<<Sqrt(4);
    // int i=NULL;nullptr;
    // std::cout<<op('-')(3,2)<<std::endl;
    // int i =42;
    // int&ir=i;